package com.koron.rating.rating.bean;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @Author: rocky
 * @Date: 2022/1/11 9:54
*/
/**
    * 设备评级-评级单元—单据历史（树）
    */
@Data
public class RatingUnitHistoryBean implements Serializable {
    /**
    * 主键
    */
    @ApiModelProperty(value="主键")
    private String id;

    /**
    * 评级单id
    */
    @ApiModelProperty(value="评级单id")
    private String orderId;

    /**
    * 设备台账id 关联台账id 只可以选 对应单元类型5、6
    */
    @ApiModelProperty(value="设备台账id 关联台账id 只可以选 对应单元类型5、6")
    private String equipmentId;

    /**
    * 设备台账名称 关联台账名称，只可以选  对应单元类型5、6
    */
    @ApiModelProperty(value="设备台账名称 关联台账名称，只可以选  对应单元类型5、6")
    private String equipmentName;

    /**
    * 部门id 对应单元类型2，3
    */
    @ApiModelProperty(value="部门id 对应单元类型2，3")
    private String deptId;

    /**
    * 部门name 对应单元类型2，3
    */
    @ApiModelProperty(value="部门name 对应单元类型2，3")
    private String deptName;

    /**
    * 单元名称、设备名称 允许修改
    */
    @ApiModelProperty(value="单元名称、设备名称 允许修改")
    private String name;

    /**
    * 单元类型 数据字典: unit_type 1根节点、2部门、3单位、4单元、5设备、6部件（与台账的业务层级可以对应）
    */
    @ApiModelProperty(value="单元类型 数据字典: unit_type 1根节点、2部门、3单位、4单元、5设备、6部件（与台账的业务层级可以对应）")
    private String unitType;

    /**
    * 父级ID 默认有一个根节点
    */
    @ApiModelProperty(value="父级ID 默认有一个根节点")
    private String parentId;

    /**
    * 父级名称
    */
    @ApiModelProperty(value="父级名称")
    private String parentName;

    /**
    * 层级
    */
    @ApiModelProperty(value="层级")
    private Integer level;

    /**
    * 层级编码 从1开始,限制最多999
    */
    @ApiModelProperty(value="层级编码 从1开始,限制最多999")
    private Integer levelCode;

    /**
    * 层级路径 拼装而成，用来查询子节点：1/23/45/999
    */
    @ApiModelProperty(value="层级路径 拼装而成，用来查询子节点：1/23/45/999")
    private String levelPath;

    /**
    * 全路径单元id
    */
    @ApiModelProperty(value="全路径单元id")
    private String fullPathCode;

    /**
    * 全路径台账名称
    */
    @ApiModelProperty(value="全路径台账名称")
    private String fullPathName;

    /**
     * 上次评级时间
     */
    @ApiModelProperty(value="上次评级完成时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date beforRatingTime;

    /**
    * 上次评级 字典:rating_type  冗余 1一类、2二类、3三类、4四类
    */
    @ApiModelProperty(value="上次评级 字典:rating_type  冗余 1一类、2二类、3三类、4四类")
    private Integer beforGrade;

    /**
    * 本次评级 字典:rating_type  1一类、2二类、3三类、4四类
    */
    @ApiModelProperty(value="本次评级 字典:rating_type  1一类、2二类、3三类、4四类")
    private Integer nowGrade;

    /**
    * 评级留言
    */
    @ApiModelProperty(value="评级留言")
    private String gradeRemarks;

    /**
    * 设备分类ID 通过分类，关联出评级标准，前端自动加载在规则内匹配到的第一个评级标准
    */
    @ApiModelProperty(value="设备分类ID 通过分类，关联出评级标准，前端自动加载在规则内匹配到的第一个评级标准")
    private String typeId;

    /**
    * 设备分类名称
    */
    @ApiModelProperty(value="设备分类名称")
    private String typeName;

    /**
    * 评级标准id
    */
    @ApiModelProperty(value="评级标准id")
    private String ratingId;

    /**
    * 适用范围
    */
    @ApiModelProperty(value="适用范围")
    private String usableRange;

    /**
    * 字典：common_major  electric电气、machine机械、others其他、communication通讯、automate自动化、synthesis综合
    */
    @ApiModelProperty(value="字典：common_major  electric电气、machine机械、others其他、communication通讯、automate自动化、synthesis综合")
    private String major;

    /**
    * 是否主要设备 0否、1是
    */
    @ApiModelProperty(value="是否主要设备 0否、1是")
    private Boolean iscore;

    /**
    * 排序字段
    */
    @ApiModelProperty(value="排序字段")
    private Integer sort;

    @ApiModelProperty(value = "设备管理单位id 前端组件相关")
    private String unitId;

    @ApiModelProperty(value = "设备管理单位名称 前端组件相关")
    private String unitName;

    /**
    * 评级年份 每个单位、每个评级设备每年只允许有一个评级单
    */
    @ApiModelProperty(value="评级年份 每个单位、每个评级设备每年只允许有一个评级单")
    private Integer ratingYear;

    /**
    * 评级完成时间
    */
    @ApiModelProperty(value="评级完成时间")
    private Date ratingTime;

    /**
    * 数据来源 导入方便标识备用字段, 记录评级单元id
    */
    @ApiModelProperty(value="数据来源 导入方便标识备用字段, 记录评级单元id")
    private String dataSources;

    /**
    * 删除标志
    */
    @ApiModelProperty(value="删除标志")
    private Integer deleteFlag;

    /**
    * 创建人id
    */
    @ApiModelProperty(value="创建人id")
    private String createBy;

    /**
    * 创建人名称
    */
    @ApiModelProperty(value="创建人名称")
    private String createByName;

    /**
    * 创建时间
    */
    @ApiModelProperty(value="创建时间")
    private Date createTime;

    /**
    * 更新人id
    */
    @ApiModelProperty(value="更新人id")
    private String updateBy;

    /**
    * 修改人姓名
    */
    @ApiModelProperty(value="修改人姓名")
    private String updateByName;

    /**
    * 修改时间
    */
    @ApiModelProperty(value="修改时间")
    private Date updateTime;

    @javax.persistence.Transient
    @ApiModelProperty(value = "子节点")
    private List<RatingUnitHistoryBean> children;

    @javax.persistence.Transient
    @ApiModelProperty(value = "是否有子集")
    private Boolean hasChildren;

    @javax.persistence.Transient
    @ApiModelProperty(value = "子集个数")
    private int childrenNum;

    private static final long serialVersionUID = 1L;
}
